今日會直接講解readinessProbe的部分,以及稍微提到Service這項功能
readinessProbe YAML定義
apiVersion: v1
kind: Pod
metadata:
name: myappformorereadness
labels:
name: myappformorereadness
spec:
containers:
- name: myappformorereadness
image: httpd
resources:
limits:
memory: "512Mi"
cpu: "512m"
requests:
memory: "128Mi"
cpu: "256m"
ports:
- containerPort: 80
readinessProbe:
httpGet:
path: /index.php
port: 80
initialDelaySeconds: 5
periodSeconds: 5
nodeSelector:
name: morepods
在httpd這個image裡,Web Server裡沒有index.php這個檔案,所以會處於NotReady的狀態,而readinessProbe這個功能,會將其他想要access目前這個Pod,都先停止access,直到問題修復解決。這邊會使用Service來access這個Pod做示範,且會用kubectl exec連進目前這個Pod去修改
建立一個Service來導流到後方的Pod,而Service會建立一個提供User訪問,可以透過Service直接access到Pod。這個Service會將流量導入到有readinessProbe功能的Pod
apiVersion: v1
kind: Service
metadata:
name: web-service
labels:
app: web-demo
spec:
selector:
name: myappformorereadness
type: NodePort
ports:
- protocol: TCP
port: 8080
targetPort: 80
nodePort: 30001
而access則會訪問失敗,且Service的Endpoints也不會配置Pod IP
這邊會去kubectl exec進入Pod去建立一個檔案,當這個Pod從NotReady變成Ready就可以透過Service導流到Pod,且browser也可以訪問,以及Service Endpoints也可以清楚看到Pod IP
Pod Health Check的部分大致就講解到這裡,明日會詳細介紹Service以及Deployment的服務